package com.trainbook.controller;


import com.trainbook.common.result.JsonResult;
import com.trainbook.entity.DTO.AddTrainDTO;
import com.trainbook.entity.DTO.TrainListDTO;
import com.trainbook.service.ITrainService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * <p>
 * 车次表 前端控制器
 * </p>
 *
 * @author Dempsey
 * @since 2020-11-27
 */
@Controller
@RequestMapping("/train")
public class TrainController {

    @Autowired
    private ITrainService trainService;

    /**
     * 添加车次
     * @param addTrainDTO 新增车次的信息
     * @return 成功与否
     */
    @PostMapping("/addTrain")
    @ApiOperation(value = "添加一个车次")
    @ApiImplicitParams(value = {@ApiImplicitParam(name = "addTrainDTO", value = "新增车次的信息", dataType = "AddTrainDTO")})
    public JsonResult addTrain(@RequestBody AddTrainDTO addTrainDTO) {
        return trainService.addTrain(addTrainDTO);
    }

    /**
     * 查询车次
     * @param trainListDTO 查询车次的条件
     * @return 成功与否
     */
    @PostMapping("/getTrainList")
    @ApiOperation(value = "查询车次",notes = "可以传多种参数，具体看文档")
    @ApiImplicitParams(value = {@ApiImplicitParam(name = "trainListDTO", value = "查询车次的条件", dataType = "TrainListDTO")})
    public JsonResult getTrainList(@RequestBody TrainListDTO trainListDTO){
        String type = trainListDTO.getType();
        // todo 可能要加上分页需求，这边先 mark 一下（不一定要上，携程就没有）
        // 无条件查询，用于页面初始加载（可以舍弃）
        if ("nothing".equals(type)){ return trainService.listWithoutCondition(trainListDTO); }
        // 基本条件查询
        if ("normal".equals(type)){ return trainService.listWithBaseCondition(trainListDTO); }
        return JsonResult.error();
    }
}

